package com.peoit.honeycomb.application;

import com.peoit.honeycomb.domain.BaseEntity;
import com.peoit.honeycomb.domain.repository.EntityRepository;
import com.peoit.honeycomb.domain.security.Role;
import com.peoit.honeycomb.dto.security.*;

import java.util.List;

/**
 * 权限
 * Created by zhouqiu on 2015/10/15.
 */
public interface SecurityApplication extends EntityRepository {

    /**
     * 后台权限查询分页
     * @param permissionPageDto
     * @return
     */
    public List<PermissionDto> findpermissionPageBy(PermissionPageDto permissionPageDto);

    /**
     * 新增后台权限
     * @param permissionDto
     * @return
     */
    public boolean addPermission(PermissionDto permissionDto);



    /**
     * 后台角色查询分页
     * @param rolePageDto
     * @return
     */
    public List<RoleDto> findRolePageBy(RolePageDto rolePageDto);

    /**
     * 新增后台角色
     * @param roleDto
     * @return
     */
    public boolean roleCreateOrUpdate(RoleDto roleDto,String [] perId);

    /**
     * 后台用户查询分页
     * @param personPageDto
     * @return
     */
    public List<PersonDto> findPersonPageBy(PersonPageDto personPageDto);

    /**
     * 新增后台用户
     * @param dto
     * @return
     */
    public boolean personCreateOrUpdate(PersonDto dto,String [] roleIds);

    /**
     * 查询后台用户条数
     *
     * @param dto
     * @return
     */
    public Long findPersonCount(PersonPageDto dto);

    /**
     * 查询后台用户角色
     *
     * @param dto
     * @return
     */
    public Long findRoleCount(RolePageDto dto);
    /**
     * 查询后台用户权限条数
     *
     * @param dto
     * @return
     */
    public Long findPerminssionCount(PermissionPageDto dto);

    public List<PermissionDto> findPermissionDtoList();

    public List<RoleDto> findRoleDtoList();

    public Object  findAll(Class entityClass)  ;

    public Object findById(Class entityClass, String id);

    public boolean deleteBy(Class clas,String id);
}
